package br.uniriotec.pssgbd.gerencia.model.dao;

import br.uniriotec.pssgbd.gerencia.model.dao.impl.CidadePostgresDAO;
import br.uniriotec.pssgbd.gerencia.model.dao.impl.EstadoPostgresDAO;
import br.uniriotec.pssgbd.gerencia.model.dao.impl.BairroPostgresDao;
import br.uniriotec.pssgbd.gerencia.model.dao.impl.ClientePostgresDAO;
import br.uniriotec.pssgbd.gerencia.model.dao.impl.GrupoPostgresDAO;
import br.uniriotec.pssgbd.gerencia.model.dao.impl.UsuarioPostgresDAO;
import br.uniriotec.pssgbd.gerencia.model.dao.impl.LocalPostgresDAO;
import br.uniriotec.pssgbd.gerencia.model.dao.impl.IgrejaPostgresDAO;
import br.uniriotec.pssgbd.gerencia.model.dao.impl.Casa_festasPostgresDAO;
import br.uniriotec.pssgbd.gerencia.model.dao.impl.CasamentoPostgresDAO;
import br.uniriotec.pssgbd.gerencia.model.entidade.Cidade;
import br.uniriotec.pssgbd.gerencia.model.entidade.Estado;
import br.uniriotec.pssgbd.gerencia.model.entidade.Bairro;
import br.uniriotec.pssgbd.gerencia.model.entidade.Cliente;
import br.uniriotec.pssgbd.gerencia.model.entidade.Grupo;
import br.uniriotec.pssgbd.gerencia.model.entidade.Usuario;
import br.uniriotec.pssgbd.gerencia.model.entidade.Local;
import br.uniriotec.pssgbd.gerencia.model.entidade.Igreja;
import br.uniriotec.pssgbd.gerencia.model.entidade.Casa_festas;
import br.uniriotec.pssgbd.gerencia.model.entidade.Casamento;


/**
 * A factory for creating DAO objects.
 */
public class DAOFactory {

	/** The _instance. */
	private static DAOFactory _instance = null;

	/**
	 * Instantiates a new dao factory.
	 */
	private DAOFactory() {

	}

	/**
	 * Gets the single instance of DAOFactory.
	 *
	 * @return single instance of DAOFactory
	 */
	public static DAOFactory getInstance() {
		if (_instance == null) {
			_instance = new DAOFactory();
		}
		return _instance;
	}


	public BasePostgresDAO<Cliente> getClienteDAO(){
		return new ClientePostgresDAO();
	}

	public BasePostgresDAO<Cidade> getCidadeDAO() {
		return new CidadePostgresDAO();
	}
	
	public BasePostgresDAO<Usuario> getUsuarioDAO() {
		return new UsuarioPostgresDAO();
	}
	
	public BasePostgresDAO<Local> getLocalDAO() {
		return new LocalPostgresDAO();
	}
	
	public BasePostgresDAO<Igreja> getIgrejaDAO() {
		return new IgrejaPostgresDAO();
	}
	
	public BasePostgresDAO<Casa_festas> getCasa_festasDAO() {
		return new Casa_festasPostgresDAO();
	}
	public BasePostgresDAO<Casamento> getCasamentoDAO() {
		return new CasamentoPostgresDAO();
	}
	public BasePostgresDAO<Grupo> getGrupoDAO() {
		return new GrupoPostgresDAO();
	}
	public BasePostgresDAO<Estado> getEstadoDAO() {
		return new EstadoPostgresDAO();
	}
	public BasePostgresDAO<Bairro> getBairroDAO() {
		return new BairroPostgresDao();
	}

}
